1. Field of the Invention
The present invention relates generally to modems. More particularly, the present invention relates to V.34 type modems, a standard (Recommendation) TD-57 for which was recently adopted (Geneva 1-9 Jun., 1994) by the ITU-T (International Telecommunications Union--Telecommunications Standardization Sector) under the subtitle "A Modem Operating at Data Signalling Rates of Up to 28800 Bit/s for use on the General Switched Telephone Network and on Leased Point-to-Point 2-Wire Telephone-Type Circuits", which document is hereby incorporated by reference herein in its entirety.
2. State of the Art
It is well known in the modem arts how to increase the signal to noise ratio of a modem by encoding bits of data which are to be modulated and sent over a telecommunications channel. In the encoding of bits in the modem transmitter, it has become relatively standard to employ a Trellis encoder. The Trellis encoder (as defined herein) typically comprises a convolutional encoder and a mapper. The convolutional encoder is a state update machine which receives inputs and generates outputs as a function of the inputs and/or the state of the machine at the time. In addition to generating outputs, the state update machine updates its state. Generally, the outputs of the convolutional encoder number one more than the inputs, thereby providing a redundancy which helps increase the signal-to-noise ratio of the system. The mapper receives as inputs the outputs of the convolutional encoder as well as other bits, and maps those inputs to one or more constellation points from which modulated signals are generated. When the mapper generates a single x,y constellation point value from the inputs, the system is said to be a two dimensional (2D) system. When the mapper generates two x,y constellation point values from the inputs, the system is said to be a four dimensional (4D) system, with the concatenation of the two x,y constellation points constituting a single point in a 4D "constellation". In the V.34 standard, a 4D constellation is utilized.
In the case of 4D codes, the mapper inputs taken from the convolutional encoder are typically used to select a subset within a four dimensional (4D) constellation (i.e., the rotations of the two 2D points), where other mapper inputs select a 4D constellation point within the 4D subset. Because the convolutional encoder inserts a redundant bit, it doubles the number of 4D constellation points required for transmitting a given number of data bits per 4D point. The efficacy of Trellis encoding is based upon the premise that this redundancy penalty is exceeded substantially by an increased separation between the sequences of 4D points generated by the Trellis encoder. The convolutional encoder, which generates only some and not all possible sequences, provides this separation. The extent to which the separation provided by the convolutional encoder exceeds the redundancy penalty is the main measure of its performance with the Trellis encoder employing it.
Preferred Trellis codes, such as described in U.S. Pat. No. 4,713,817 to Wei (which is hereby incorporated by reference herein) have the following property, known as 90.degree. rotational invariance: the 0.degree., 90.degree., 180.degree., and 270.degree. rotation about the origin of any sequence of points generated by the Trellis encoder is itself a sequence of points generated by the Trellis encoder. In modem applications, rotational invariance is important because channel impairments can lead to phase ambiguities in the receiver. The rotations about the origin taking the thirty-two 4D subsets employed by the sixty-four state code to each other are 0.degree., 90.degree., 180.degree., 270.degree., and the same is true for the eight 4D subsets employed by the sixteen state code. So, a Trellis encoder employing of these collections of 4D subsets is rotationally invariant if and only if the convolutional encoder employed has the corresponding rotational invariance property.
Trellis codes which are improved over those of Wei are described in U.S. Pat. Nos. 5,260,971 to Cole and 5,291,520 to Cole which are hereby incorporated by reference herein. In those patents, a distribution preserving encoding is described where points u(k) (k being a time index for 2D points) chosen by a mapper are precoded according to a linear function which effectively incorporates a FIR filter and an offset means which utilizes an estimation which causes the predistorted outputs x(k) to either occupy the same defined regions in space as the points exiting the mapper or to approximate the point exiting the mapper. Thus, the points being transmitted x(k) are set equal to u(k)+q(k)-p(k), where u(k) is a point from the 2D constellation, p(k) is defined according to p(k)=h(1).times.(k-1)+h(2).times.(k-2)+ . . . , where h(n) for n=1,2 . . . represents the impulse response of FIR filter and q(k) is picked from points in a 2D lattice closest to p. The points q(k) are chosen in this manner so that the coset(u+q) is equal to coset(u) in order to provide a valid coded sequence for the Viterbi decoder in the receiver. The estimation is chosen so that the power of the output x(k) on average is approximately equal to the power of the points u(k) exiting the mapper.
In an article by Rajiv Laroia entitled "ISI Coder--Combined Coding and Precoding" submitted to Technical Subcommittee TR30.1 on June 14-18 Baltimore, which is hereby incorporated by reference herein, the concept of using the convolutional encoder in a feedback loop of a Trellis encoder was disclosed. The feedback loop is used in order to guarantee that the parity of a pair of offset points generated by a mapper and then offset, and from which bits are derived for input into the convolutional encoder, is equal to the value of the redundant bit Y0 which is determined by the state of the convolutional encoder. In particular, and as shown in the prior art FIG. 1 which is effectively a redrawing of Laroia's Figure 1, Laroia has a Trellis or ISI encoder 15 which uses a 4D mapper 21 to dictate early and late points u(k) of a 4D point. Rotational bits (U3, U2, U1, and U0) for the two 2D points are typically obtained at least in part from a differential encoder 35, while a shell mapper 37 is typically used to generate yet other bits for the 4D mapper. It should be noted that Laroia sets U0 to zero.
The points u(k) output by the 4D mapper 21 of Laroia are subjected to offset by the addition of q(k) at summer 23, and predistortion by the subtraction of p(k) at summer 25, where the output of the modem x(k) is defined according to u(k)+q(k)-p(k)=x(k). The outputs x(k) are fed back through an FIR filter 27 to generate values p(k). The pair of sums of u(k)+q(k) for two consecutive points are fed through a bit extractor 31 and convolutional encoder 33 which generates the next value of the redundant bit Y0. The redundant bit Y0 generated by the convolutional encoder 33, and the predistortion value p(k) generated by the filter 27 are provided to the offset point picker 29 which picks an offset q(k). The offset q(k) is chosen from either of two cosets of a 4D parity lattice, where the coset is chosen by the value of Y0, and the point in the coset is chosen to be closest to the predistortion value p(k). In this manner, the offsets q(k) for a pair of points u(k) can be chosen to guarantee that the parity of the offset points y(k)=u(k)+p(k) is equal to Y0. In other words, the offset point picker 29 of Laroia must adjust q(k) such that u(k)+q(k), when subjected to bit extraction, will generate an appropriate Y0 bit value. This requirement introduces various limitations on the system which affect its performance. One limitation is that the resulting system is not rotationally invariant. Another limitation is that the offset points picked are chosen from a coset of a 4D parity lattice which is a subset of the 4D constellation lattice; and this limits the points which can be chosen. A third limitation is that by the forced adjustment of q(k), p(k) may not be closely estimated by q(k), which would result in the output x(k) having a different power than chosen points u(k). Thus, while a system incorporating the convolutional encoder in a feedback loop has certain desirable results, the system proposed by Laroia has several undesirable traits which adversely impact its performance.